package com.telit.dispose.dao.dispose;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.telit.dispose.entity.dispose.PlatMetaFieldEntity;
import com.telit.dispose.vo.resourceManagement.ResourceSimpVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;
import java.util.Map;


/**
 * 元数据-字段 mapper
 * Create by Chencf 2022/08/05
 */
public interface PlatMetaFieldMapper extends BaseMapper<PlatMetaFieldEntity> {

    /**
     * 根据表编码获取物理字段列表
     *
     * @param tableCode 表编码
     *
     * @return List<PlatMetaFieldEntity>
     */
    List<PlatMetaFieldEntity> selectFieldByTableCode(String tableCode);

    /**
     * 根据表和字段编码获取物理字段列表
     *
     * @param tableCode 表编码
     * @param fieldCode 字段编码
     *
     * @return List<PlatMetaFieldEntity>
     */
    List<PlatMetaFieldEntity> selectFieldByTableAndField(String tableCode, String fieldCode);


    /**
     * 创建物理字段
     *
     * @param entity PlatMetaFieldEntity
     *
     * @return 受影响的行数
     */
    int createField(PlatMetaFieldEntity entity);

    int deletePlatMetaFieldByTableId(@Param("tableId") String tableId);

    List<PlatMetaFieldEntity> selectAllFilesByTableId(@Param("tableId") String tableId);

    List<Map> selectPageList(@Param("size") Integer size, @Param("current") Integer current,
                             @Param("tableName") String tableName, @Param("name") String name,
                             @Param("xzqhcode") String xzqhcode);


    IPage<Map> selectPageList1(IPage page,
                               @Param("tableName") String tableName, @Param("name") String name,
                               @Param("xzqhcode") String xzqhcode);

    void insertDataByTableName(@Param("id") String id, @Param("codeList") String codeList,
                               @Param("tableName") String tableName, @Param("valueList") String valueList);


    Map findDetailByTableNameAndDetailId(@Param("tableName") String tableName, @Param("detailId") String detailId);

    List<Map> findDetailByTableName(@Param("tableName") String tableName, @Param("districtCode") String districtCode);
    List<Map> findDetailByTableName1(IPage page,@Param("longitude") String longitude,@Param("latitude") String latitude,@Param("tableName") String tableName, @Param("districtCode") String districtCode, @Param("radius") String  radius);

    void updateDeleteFlagByTableName(@Param("tableName") String tableName, @Param("realName") String realName,
                                     @Param("date") Date date, @Param("detailId") String detailId);


    int selectCountByTableName(@Param("tableName") String tableName, @Param("name") String name,
                               @Param("xzqhcode") String xzqhcode);


    void updateByTableIdAndId(@Param("realName") String realName, @Param("date") Date date,
                              @Param("namebank") String namebank, @Param("id") String id,
                              @Param("tableId") String tableId);

    void updateColumn(@Param("tableName") String tableName, @Param("code") String code,
                      @Param("namebank") String namebank);


    List<ResourceSimpVO> findTableSimpInfo(@Param("tableName") String tableName,
                                           @Param("districtCode") String districtCode);

    List<ResourceSimpVO> findTableSimpInfo1(IPage page,@Param("tableName") String tableName,@Param("districtCode") String districtCode,@Param("longitude") String longitude,@Param("latitude") String latitude,
                                           @Param("radius") String radius);

    @Select("select img from fire_resource_category where cat_name=#{tableName} and deleted=false ")
    String findResourceIcon(@Param("tableName") String tableName);

    @Select("select icon_img from fire_resource_category where cat_name=#{tableName} and deleted=false")
    String findIconImg(@Param("tableName") String tableName);


    List<ResourceSimpVO> findAllUav(@Param("districtCode") String districtCode);
    List<ResourceSimpVO> findAllUav1(IPage page,@Param("longitude") String longitude,@Param("latitude") String latitude,@Param("districtCode") String districtCode, @Param("radius") String  radius);

    List<ResourceSimpVO> findAllCamera(@Param("districtCode") String districtCode);
    List<ResourceSimpVO> findAllCamera1(IPage page,@Param("longitude") String longitude,@Param("latitude") String latitude,@Param("districtCode") String districtCode,@Param("radius") String  radius);

    List<Map> findDetailByTableNameAndFiles(@Param("files") String files, @Param("tableName") String tableName,
                                            @Param("xzqhcode") String xzqhcode, @Param("name") String name);


    void commLeadDataInsert(@Param("id") String id, @Param("tableName") String tableName,
                            @Param("colums") String colums, @Param("value") String value,
                            @Param("deleteFlag") String deleteFlag, @Param("createBy") String createBy,
                            @Param("createName") String createName, @Param("createDate") String createDate,
                            @Param("updateBy") String updateBy, @Param("updateName") String updateName,
                            @Param("updateDate") String updateDate, @Param("tentmentId") String tentmentId
    );


   List<String > findAllUavDistrict(@Param("longitude") String longitude,@Param("latitude") String latitude,
           @Param("districtCode") String districtCode,@Param("radius") String radius);

   List<String > findAllCameraDistrict(@Param("longitude") String longitude,@Param("latitude") String latitude,
           @Param("districtCode") String districtCode,@Param("radius") String  radius);

   List<String > findTableSimpInfoDistrict(@Param("longitude") String longitude,@Param("latitude") String latitude,
                                           @Param("tableName") String tableName,
                                           @Param("districtCode") String districtCode,
                                           @Param("radius") String  radius);


   String  findDistrictName(@Param("code") String code, @Param("codeLength") Integer codeLength);

}
